//   app入口文件  >>>   路由 { router （ schema[ 校验规则 ] ） }  >>>
// 路由处理器 { router_handler （ db/index [ 连接数据库，对熟路库进行增删改查 ] ） }

// 导入 express 模块
const express = require('express')

// 导入 cors 中间件
const cors = require('cors')

// 创建 express 的服务器实例
const app = express()

// 一定要在路由之前配置解析 Token 的中间件
const expressJWT = require('express-jwt')
const config = require('./config')

// 配置 cors 跨域
app.use(cors())

// 配置解析 application/x-www-form-urlencoded 格式的表单数据   配置解析 json 格式的表单数据
app.use(express.urlencoded({ extended: false }))
app.use(express.json())

//  统一响应
app.use(require('./middleware/optimizeSend'))

// 一定要在路由之前配置解析 Token 的中间件
app.use(expressJWT({ secret: config.jwtSecretKey }).unless({ path: [/^\/api\//] }))

// 导入并使用用户路由模块
app.use('/api', require('./router/user'))

// 导入并使用用户信息的路由模块
app.use('/my', require('./router/userinfo'))

// 导入并使用文章分类路由模块
app.use('/my/article', require('./router/artcate'))

// 定义错误级别的中间件
app.use(require('./middleware/errHandler'))

// 调用 app.listen 方法，指定端口号并启动web服务器
app.listen(3007, function () {
  console.log('api server running at http://127.0.0.1:3007')
})
